• Jump To … +
    main.js separate.js single.js web-apg-api.js main.js web-conv-api.js ast.js csv.js dangling-else.js display.js flags.js float.js limits.js main.js multiline-mode.js recursive.js replace.js rules.js split.js testonly.js trace.js udt.js unicode.js web-email.js word-boundaries.js main.js phone-number.js web-main.js web-phone-number.js main.js phone-number.js setup.js translate.js xml.js branch-fail-grammar.js main.js parent-mode-grammar.js setup.js universal-mode-grammar.js colors-app.js colors-callbacks.js colors.js main.js more-app.js more-setup.js more.js ast-callbacks.js bad-input.js basic.js ini-file.js main.js parser-callbacks.js setup.js trace.js anbncn.js and.js c-comment.js compound.js main.js nested.js not.js setup.js boundaries-grammar.js boundaries.js comment-grammar.js comment.js main.js negative-grammar.js negative.js positive-grammar.js positive.js setup.js main.js odata-grammar.js run.js setup.js area-code.js lookaround.js main.js phone-number.js setup.js simple.js all-operators.js default.js fancy-number.js limited-lines.js main.js select-operators.js select-rules.js setup.js main.js minimal.js parent-u.js parent.js phone-number.js setup.js stats.js trace.js universal-u.js universal.js callbacks.js grammar.js main.js parser.js writeHtml.js LICENSE.md README.md index.md
  • bad-input.js

  • §
    /*  *************************************************************************************
     *   copyright: Copyright (c) 2021 Lowell D. Thomas, all rights reserved
     *     license: BSD-2-Clause (https://opensource.org/licenses/BSD-2-Clause)
     *   ********************************************************************************* */
  • §

    This application will read an initialization file with anonymous keys, disjointed sections and disjointed keys. It will collect the key values in each section found and then display the found data alphabetizing the section names and the key names within each section. Same as the basic.js example, except that there is some bad data, data that does not follow the defining SABNF grammar. This demonstrates how “error productions” can be used to ignore and/or report bad data. See, for example, BadSectionLine, BadValueLine, BadBlankLine.

    (function badInput() {
      const fs = require('node:fs');
      const setup = require('./setup');
      try {
        const inputStr = fs.readFileSync('./src/ini-file/bad.txt', 'utf8');
        setup(inputStr, null, null);
      } catch (e) {
        console.log();
        console.log('input error');
        console.dir(e, {
          showHidden: true,
          depth: null,
          colors: true,
        });
      }
    })();